import type { FUniver } from '@univerjs/facade'
import { setupClearStyles, setupCommandsListenerSwitch, setupCreateSheet, setupEditSwitch, setupGetA1CellData, setupGetSheetData, setupGetValue, setupGetWorkbookData, setupRedo, setupScrollToBottom, setupScrollToCell, setupScrollToTop, setupSetBackground, setupSetSelection, setupSetValue, setupSetValues, setupUndo } from './api'
import { setupSheetEditableSwitch } from './setups/setup-perm'

/**
 * 设置工具栏功能
 * @param univerAPI Univer API 实例，用于与 Univer 表格进行交互
 */
export function setupToolbar(univerAPI: FUniver) {
  // 获取工具栏DOM元素
  const $toolbar = document.getElementById('toolbar')!

  // 初始化设置单元格值的相关功能
  setupSetValue($toolbar, univerAPI)
  // 初始化设置多个单元格值的相关功能
  setupSetValues($toolbar, univerAPI)
  // 初始化获取单元格值的相关功能
  setupGetValue($toolbar, univerAPI)
  // 初始化获取A1单元格数据的相关功能
  setupGetA1CellData($toolbar, univerAPI)

  // 初始化获取工作簿数据的相关功能
  setupGetWorkbookData($toolbar, univerAPI)
  // 初始化获取工作表数据的相关功能
  setupGetSheetData($toolbar, univerAPI)
  // 初始化创建工作表的相关功能
  setupCreateSheet($toolbar, univerAPI)

  // 初始化滚动到指定单元格的相关功能
  setupScrollToCell($toolbar, univerAPI)
  // 初始化滚动到顶部的相关功能
  // setupScrollToTop($toolbar, univerAPI)
  // 初始化滚动到底部的相关功能
  // setupScrollToBottom($toolbar, univerAPI)

  // 初始化设置背景的相关功能
  // setupSetBackground($toolbar, univerAPI)

  // 初始化命令监听器开关的相关功能
  setupCommandsListenerSwitch($toolbar, univerAPI)
  // 初始化编辑开关的相关功能
  setupEditSwitch($toolbar, univerAPI)

  // 初始化撤销操作的相关功能
  setupUndo($toolbar, univerAPI)
  // 初始化重做操作的相关功能
  setupRedo($toolbar, univerAPI)

  // 初始化设置选区的相关功能
  setupSetSelection($toolbar, univerAPI)
  // 初始化清除样式的相关功能
  setupClearStyles($toolbar, univerAPI)

  // 初始化工作表编辑开关的相关功能
  setupSheetEditableSwitch($toolbar, univerAPI)
}
